// 开发新的valueType时
// 新建一个对应的JS处理逻辑config.editor.xxx.js
// 在config-common-template.jsp文件中增加对应的模板
// 在xpopup:'set-value'和xpopup:'edit'中增加对应的valueMetadata和configValue收集控件
// .use-in-object是用于valueType=object构造对象字段的节点

window.ConfigPageVars = window.ConfigPageVars || { 
	valueTypes: (function() {
		var valueTypes = [];
		function findValueTypeHandler(valueType, defHandler) {
			for (var i = 0; i < valueTypes.length; i ++) {
				var item = valueTypes[i];
				if (item.type == valueType) { return item; }
			}
			return defHandler;
		};
		function addValueTypeHandler(valueType, name, handler) {
			valueTypes.push({ type:valueType, name:name, handler:handler });
		};
		function eachValueTypeHandlers(fn) {
			$.each(valueTypes, function(i,v) {
				fn.call(this, i, v);
			});
		};
		return {
			add: addValueTypeHandler,
			find: findValueTypeHandler,
			each: eachValueTypeHandlers
		};
	})()
};

$.extend($.fn.validatebox.defaults.rules, {
	itemsRequired: {
		message : "该输入项为必填项",
		validator : function(value) {
			var inputName = $(this).siblings(".textbox-value").prop("name");
			var $target = $(this).closest(".textbox").siblings("[textboxname='"+inputName+"']");
			var items = $target.xcall("getData", "items");
			return items != null && items.length > 0;
		}
	},
	fieldNameValidate : {
		message : "字段名格式错误",
		validator : function(value) {
			if (value == "") { return true; }
			return /^[_\$a-zA-Z][_\$\w]*$/.test(value);
		}
	},
	configKeyValidate : {
		message : "格式错误, 只允许包含数字字母及._$等特殊字符",
		validator : function(value) {
			if (value == "") { return true; }
			return /^[\w\$]+(\.[\w\$]+)*$/.test(value);
		}
	},
	conflictValidate : {
		message : "该内容已存在",
		validator : function(value) {
			if (value == "") { return true; }
            var opts = $(this).validatebox("options");
            if (value == opts.metaDefault) { return true; }
            return $.inArray(value, opts.metaItems) < 0;
		}
		
	}
});
